#include <stdio.h>
#include "unistd.h"
#include "stdlib.h"
#include "sys/types.h"

int main(int argc, char const *argv[])
{

    int pid = fork();

    if (pid == -1)
    {
        perror("进程fork失败");
    }
    else if (pid > 0)
    {
        sleep(1);
    }
    else if (pid == 0)
    {
        // 在子进程中执行
        printf("子进程: 父pid = %d, 子pid=%d\n", getppid(), getpid());

        char *args[] = {"/bin/ls","-l", NULL};
        char *env[] = {NULL};
        int r = execve(args[0], args, env);
        if(r == -1){
            perror("execve失败");
            exit(EXIT_FAILURE);
        }
        printf("子进程: execve成功, 这行代码不会执行, 因为新的进程,会替换当前的\n");
    }

    return 0;
}
